Oracle PL/SQL এবং অন্যান্য relational databases-এ User Privileges এবং Authorization হল দুটি গুরুত্বপূর্ণ ধারণা, যেগুলি ডেটাবেসের সুরক্ষা এবং অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়। এগুলি নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা ডেটাবেসে নির্দিষ্ট কাজ করতে পারে। সঠিকভাবে privilege এবং authorization ম্যানেজ করলে ডেটাবেসের সুরক্ষা বৃদ্ধি পায় এবং অপ্রত্যাশিত বা অবৈধ অ্যাক্সেস রোধ করা যায়।
১. User Privileges (ব্যবহারকারী অধিকার)
User Privileges হল সেই অনুমতিগুলি যা একটি নির্দিষ্ট ব্যবহারকারীকে ডেটাবেসের টেবিল, ভিউ, সূচক, প্রোসিডিউর, ফাংশন, এবং অন্যান্য অবজেক্টে অ্যাক্সেস প্রদান করে। ব্যবহারকারী যে কাজ করতে পারে, তা নির্ধারণ করে এই privileges।
ধরন অনুযায়ী Privileges:
প্রথমত, প্রিভিলেজ দুটি প্রধান শ্রেণীতে বিভক্ত হয়:
- System Privileges (সিস্টেম প্রিভিলেজ): এগুলি হল সিস্টেমের স্তরে অনুমতি, যেখানে ব্যবহারকারী সিস্টেমের কিছু কাজ বা অবজেক্ট পরিচালনা করতে পারে।
- Object Privileges (অবজেক্ট প্রিভিলেজ): এগুলি নির্দিষ্ট ডেটাবেস অবজেক্ট (যেমন টেবিল, ভিউ) অ্যাক্সেস করার জন্য দেওয়া হয়।
System Privileges:
এগুলি ব্যবহারকারীকে সিস্টেম পর্যায়ে নির্দিষ্ট কাজ করার অনুমতি দেয়, যেমন টেবিল তৈরি, ব্যবহারকারী তৈরি ইত্যাদি।
- CREATE SESSION: একটি ব্যবহারকারীকে ডেটাবেসে লগ ইন করার অনুমতি দেয়।
- CREATE TABLE: ব্যবহারকারীকে একটি টেবিল তৈরি করার অনুমতি দেয়।
- ALTER ANY TABLE: ব্যবহারকারীকে যেকোনো টেবিলের স্ট্রাকচার পরিবর্তন করার অনুমতি দেয়।
- DROP USER: ব্যবহারকারীকে অন্য কোনো ব্যবহারকারীকে ডিলিট করার অনুমতি দেয়।
Object Privileges:
এগুলি নির্দিষ্ট ডেটাবেস অবজেক্টের উপর ভিত্তি করে, যেমন টেবিল বা ভিউ:
- SELECT: ব্যবহারকারীকে একটি টেবিল বা ভিউ থেকে ডেটা দেখতে অনুমতি দেয়।
- INSERT: ব্যবহারকারীকে একটি টেবিল বা ভিউতে নতুন ডেটা যোগ করার অনুমতি দেয়।
- UPDATE: ব্যবহারকারীকে একটি টেবিল বা ভিউতে ডেটা আপডেট করার অনুমতি দেয়।
- DELETE: ব্যবহারকারীকে একটি টেবিল বা ভিউ থেকে ডেটা মুছে ফেলতে অনুমতি দেয়।
- EXECUTE: একটি প্রোগ্রাম বা ফাংশন এক্সিকিউট করার অনুমতি।
GRANT Command:
GRANT কমান্ড ব্যবহার করে ব্যবহারকারীকে নির্দিষ্ট প্রিভিলেজ দেওয়া হয়।
Syntax:
GRANT privilege ON object TO user;
উদাহরণ:
-- Granting SELECT and INSERT privileges on the 'employees' table to user 'john'
GRANT SELECT, INSERT ON employees TO john;
এই কমান্ডের মাধ্যমে ব্যবহারকারী john-কে employees টেবিলে SELECT এবং INSERT করার অনুমতি দেওয়া হয়।
২. Authorization (অনুমোদন)
Authorization হল সেই প্রক্রিয়া যার মাধ্যমে ডেটাবেসে কোন ব্যবহারকারী কি কাজ করতে পারবে তা নির্ধারণ করা হয়। এটি ব্যবহারকারীর identity এবং তাদের প্রিভিলেজের ভিত্তিতে কাজ করে। Authorization মেকানিজমের মাধ্যমে বিভিন্ন ব্যবহারকারীকে বিভিন্ন স্তরের অ্যাক্সেস দেয়া হয়, যাতে ডেটাবেসের সুরক্ষা নিশ্চিত করা যায়।
GRANT এবং REVOKE কমান্ড
- GRANT: এই কমান্ডের মাধ্যমে ব্যবহারকারীকে নির্দিষ্ট প্রিভিলেজ দেওয়া হয়।
- REVOKE: এই কমান্ডের মাধ্যমে একটি ব্যবহারকারীর দেওয়া প্রিভিলেজ বাতিল করা হয়।
Syntax (GRANT):
GRANT privilege ON object TO user;
Syntax (REVOKE):
REVOKE privilege ON object FROM user;
উদাহরণ:
-- Revoking DELETE privilege from user 'john' on 'employees' table
REVOKE DELETE ON employees FROM john;
এখানে, john ব্যবহারকারীর employees টেবিলে DELETE প্রিভিলেজ বাতিল করা হচ্ছে।
৩. Role Management in Oracle
Role হল একাধিক প্রিভিলেজের একটি সেট যা এক বা একাধিক ব্যবহারকারীর কাছে প্রদান করা যেতে পারে। ব্যবহারকারীকে একটি role প্রদান করলে, তারা সেই role এর অধিকারগুলি (privileges) অর্জন করে।
Role তৈরি করা (Creating a Role):
CREATE ROLE manager_role;
Role-এ Privileges যোগ করা (Granting Privileges to a Role):
GRANT SELECT, INSERT, UPDATE ON employees TO manager_role;
Role ব্যবহারকারীর কাছে প্রদান করা (Assigning a Role to a User):
GRANT manager_role TO john;
এখানে, manager_role রোলটি john ব্যবহারকারীর কাছে প্রদান করা হচ্ছে, এবং তাকে employees টেবিলে SELECT, INSERT, এবং UPDATE করার অনুমতি দেওয়া হচ্ছে।
Role-এ Privileges বাতিল করা (Revoking Privileges from a Role):
REVOKE SELECT, INSERT ON employees FROM manager_role;
এখানে, manager_role রোল থেকে employees টেবিলের SELECT এবং INSERT প্রিভিলেজ বাতিল করা হচ্ছে।
৪. Definer Rights এবং Invoker Rights
Oracle PL/SQL-এ, যখন একটি procedure বা function তৈরি করা হয়, তখন Definer Rights এবং Invoker Rights এর মধ্যে একটি নির্বাচন করতে হয়, যা নির্ধারণ করে কে কোন প্রিভিলেজ প্রয়োগ করতে পারবে।
Definer Rights:
যখন কোনও procedure বা function Definer Rights সহ তৈরি করা হয়, তখন সেই procedure বা function-টি যে ব্যবহারকারী দ্বারা তৈরি করা হয়েছে, তার প্রিভিলেজ ব্যবহার করে এক্সিকিউট হবে। অর্থাৎ, যে ব্যবহারকারী procedure বা function তৈরি করেছে, সে যদি নির্দিষ্ট টেবিলের উপর প্রিভিলেজ না দেয়, তবুও সেই procedure বা function চালানোর সময় ওই টেবিলের উপর কাজ করা যাবে।
Invoker Rights:
যখন procedure বা function Invoker Rights সহ তৈরি করা হয়, তখন যে ব্যবহারকারী ওই procedure বা function এক্সিকিউট করবে, তার প্রিভিলেজ অনুযায়ী কাজ হবে।
৫. Best Practices for User Privileges and Authorization
- Principle of Least Privilege: ব্যবহারকারীদের শুধুমাত্র তাদের কাজের জন্য প্রয়োজনীয় প্রিভিলেজ প্রদান করা উচিত। অতিরিক্ত অ্যাক্সেসের মাধ্যমে নিরাপত্তা ঝুঁকি বাড়ে।
- Role-Based Access Control (RBAC): বিভিন্ন ধরনের ব্যবহারকারীর জন্য রোল তৈরি করুন এবং সেই রোলগুলোর মাধ্যমে প্রিভিলেজ প্রদান করুন।
- Audit Privileges: কোন ব্যবহারকারী কখন এবং কিভাবে কোনো প্রিভিলেজ পেয়েছে, তা মনিটর এবং লগ করা উচিত। এই তথ্য ব্যবহারে নিরাপত্তা নিশ্চিত করা যায়।
- Review Privileges Regularly: পুরানো এবং অপ্রয়োজনীয় প্রিভিলেজগুলি নিয়মিত পর্যালোচনা করুন এবং মুছে ফেলুন।
শেষ কথা
User Privileges এবং Authorization হল Oracle Database-এ ডেটাবেস সুরক্ষা এবং অ্যাক্সেস কন্ট্রোলের অন্যতম গুরুত্বপূর্ণ উপাদান। সঠিকভাবে privilege এবং authorization ম্যানেজ করলে ডেটাবেসের সুরক্ষা বাড়ানো যায় এবং অপ্রত্যাশিত বা অবৈধ অ্যাক্সেস রোধ করা সম্ভব হয়। GRANT এবং REVOKE কমান্ডগুলি ব্যবহার করে আপনি বিভিন্ন স্তরের প্রিভিলেজ কন্ট্রোল করতে পারেন, এবং রোল ব্যবস্থাপনা এর আরও এক পদক্ষেপ উন্নতি করতে সাহায্য করে।